/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.PelaksanaPengmasEksternal;
import Entity.PengabdianMasyarakat;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import library.Koneksi;

/**
 *
 * @author user
 * model untuk menangani operasi database berkaitan dengan pelaksana pengabdian masyarakat eksternal
 */
public class DaftarPelaksanaPengamas {
    
    PelaksanaPengmasEksternal pengmasEksternal;

    //method digunakan untuk menambah data pelaksana pengabdian masyarakat eksternal
    public boolean tambahPelaksanaPengmasEksternal(PelaksanaPengmasEksternal pengmasEksternal){
        
        boolean hasil = false;
        this.pengmasEksternal = pengmasEksternal;
        int noPenelitian = 0;
        Connection conn = Koneksi.getKoneksi();
        PreparedStatement st = null;
        if(!"".equals(this.pengmasEksternal.getPengmas().getUniqueKey())){
            ResultSet rs1;
            try {
                String sql1 = "SELECT NO_PENGABDIAN_MASYARAKAT FROM pengabdian_masyarakat WHERE UNIQUEKEY = '"+this.pengmasEksternal.getPengmas().getUniqueKey()+"'";
                System.out.println(sql1);
                
                st = conn.prepareStatement(sql1);
                
                rs1 = st.executeQuery();
                
                while(rs1.next()){
                    PengabdianMasyarakat pengmas = new PengabdianMasyarakat();
                    pengmas.setNoPengabdianMasyarakat(rs1.getInt("NO_PENGABDIAN_MASYARAKAT"));
                    this.pengmasEksternal.setPengmas(pengmas);
                }
                //System.out.println("nomor cantik"+rs1.getInt("NO_PENGABDIAN_MASYARAKAT"));
                
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
            } finally{
                try {
                    st.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } 
        
        String sql = "insert into pelaksana_pengamas_eksternal(ID_USER, NO_PENGABDIAN_MASYARAKAT, NAMA_PELAKSANA_PENGMAS) "
                + "value('"+this.pengmasEksternal.getIdPelaksanaPengams()+
                "', "+this.pengmasEksternal.getPengmas().getNoPengabdianMasyarakat()+
                ", '"+this.pengmasEksternal.getNamaPelaksanaPengmas()+
                "')";
        
        System.out.println(sql);
        
        try {
            
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate();
            if(rs > 0){
                hasil = true;
            } else{
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;
        
    }
        
    //method digunakan untuk menghapus data pelaksana pengabdian masyarakat eksternal
    public boolean hapusPelaksanaPengmasEksternal(PelaksanaPengmasEksternal pelaksanaPengmas){

        boolean hasil = true;

        PreparedStatement st = null;

        String sql = "DELETE FROM pelaksana_pengamas_eksternal WHERE ID_USER = "+pelaksanaPengmas.getIdPelaksanaPengams();
        System.out.println(sql);
        Connection conn = Koneksi.getKoneksi();
        try {
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return hasil;

    }
    
    //method digunakan untuk mengambil daftar pelaksana pengabdian masyarakat eksternal
    public List<PelaksanaPengmasEksternal> ambilDaftarPelaksanaPengmasEksternal(PengabdianMasyarakat pengmas){
        List<PelaksanaPengmasEksternal> daftarPelaksanaPengmasEksternal = new ArrayList<PelaksanaPengmasEksternal>();
        
        String sql = "SELECT * FROM pelaksana_pengamas_eksternal, pengabdian_masyarakat "
                + "WHERE pengabdian_masyarakat.NO_PENGABDIAN_MASYARAKAT = pelaksana_pengamas_eksternal.NO_PENGABDIAN_MASYARAKAT "
                + "AND pengabdian_masyarakat.NO_PENGABDIAN_MASYARAKAT="+pengmas.getNoPengabdianMasyarakat();
        PreparedStatement st = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while(rs.next()){
                this.pengmasEksternal = new PelaksanaPengmasEksternal();
                                
                this.pengmasEksternal.setIdPelaksanaPengams(rs.getInt("ID_USER"));
                this.pengmasEksternal.setPengmas(pengmas);
                this.pengmasEksternal.setNamaPelaksanaPengmas(rs.getString("NAMA_PELAKSANA_PENGMAS"));
                                
                daftarPelaksanaPengmasEksternal.add(this.pengmasEksternal);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPelaksanaPengamas.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarPelaksanaPengmasEksternal;
    }
    
}
